import dayjs from "dayjs";
// import * as XLSX from "xlsx"; // Vue3 版本
import { ElMessage } from "element-plus";
// import utc from 'dayjs/plugin/utc'
/*
 * 权限判断，决定是否放行
 */
export const authorityJudgment = (callback) => {
  callback && callback();
};
export const formatDate = (v) => {
  if (v) {
    // 将Date()对象转成YYYY-MM-DD HH:MM:SS格式
    const year = v.getFullYear();
    const month = v.getMonth() + 1 < 10 ? `0${v.getMonth() + 1}` : v.getMonth();
    const day = v.getDate() + 1 < 10 ? `0${v.getDate() + 1}` : v.getDate();
    const hour = v.getHours() < 10 ? `0${v.getHours()}` : v.getHours();
    const minute = v.getMinutes() < 10 ? `0${v.getMinutes()}` : v.getMinutes();
    const second = v.getSeconds() < 10 ? `0${v.getSeconds()}` : v.getSeconds();
    return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
  }
  return "-";
};
// 将秒数转成YYYY-MM-DD HH:MM:SS格式
export const formatDates = (times) => {
  return times > 0 ? dayjs.unix(times).format("YYYY-MM-DD HH:mm:ss") : "-";
};
// 将秒数转成YYYY-MM-DD HH:MM:SS格式
export const formatDateNoSecond = (times) => {
  return times > 0 ? dayjs.unix(times).format("YYYY-MM-DD") : "-";
};
//搜索框日期选择器默认时间
export const pickerDefaultTime = [
  new Date(0, 0, 0, 0, 0, 0),
  new Date(0, 0, 0, 23, 59, 59),
];
//格式化时间
export const formatterTime = (row, column, cellValue, index) => {
  return cellValue > 0
    ? dayjs.unix(cellValue).format("YYYY-MM-DD HH:mm:ss")
    : "-";
};
export const formatterDate = (row, column, cellValue, index) => {
  return cellValue > 0 ? dayjs.unix(cellValue).format("YYYY-MM-DD") : "-";
};
//格式化时间
export const formatterUtcTime = (row, column, cellValue, index) => {
  const tmp = new Date(cellValue);
  return formatDate(tmp);
  // return cellValue > 0 ? dayjs.unix(tmp).format("YYYY-MM-DD HH:mm:ss") : "-";
};
// 格式化转换 是、否
export const formatter = (row, column, cellValue, index) => {
  return cellValue ? "是" : "否";
};

//把毫秒 变成秒
export const timestamp = (value) => {
  if (value) {
    if (isDate(value)) {
      return new Date(value).getTime() / 1000;
    } else {
      return value / 1000;
    }
  }
};

//处理数字千分位
export const numberToCurrencyNo = (value) => {
  if (!value) return 0;
  // 获取整数部分
  const intPart = Math.trunc(value);
  // 整数部分处理，增加,
  const intPartFormat = intPart
    .toString()
    .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,");
  // 预定义小数部分
  let floatPart = "";
  // 将数值截取为小数部分和整数部分
  const valueArray = value.toString().split(".");
  if (valueArray.length === 2) {
    // 有小数部分
    floatPart = valueArray[1].toString(); // 取得小数部分
    return intPartFormat + "." + floatPart;
  }
  return intPartFormat + floatPart;
};

export const isDate = (value) => {
  // 尝试将值转换为Date对象
  let date = new Date(value);

  // 检查转换后的Date对象是否有效
  return !isNaN(date.getTime());
};

// 导出/下载方法
export const exportOrDownload = (data, fileName) => {
  // data --数据流
  // fileName -- 文件名称
  const elink = document.createElement("a");
  elink.download = fileName;
  elink.style.display = "none";
  const blob = new Blob([data], { type: "application/vnd.ms-excel" });
  elink.href = URL.createObjectURL(blob);
  document.body.appendChild(elink);
  elink.click();
  document.body.removeChild(elink);
};

// 导出报表

export const exportToExcel = (data, headName, excelName) => {
  if (!data.length) {
    ElMessage({
      message: "暂无数据可导出",
      type: "error",
    });
    return;
  }

  const list = data.map((item) => {
    const obj = {};
    for (const k in item) {
      if (headName[k]) {
        obj[headName[k]] = item[k];
      }
    }
    return obj;
  });

  // 创建工作表
  // const workTable = XLSX.utils.json_to_sheet(list);
  // // 创建工作簿
  // const workbook = XLSX.utils.book_new();
  // // 将工作表放入工作簿中
  // XLSX.utils.book_append_sheet(workbook, workTable, "data");
  // // 生成文件并下载
  // XLSX.writeFile(workbook, `${excelName}.xlsx`);
};
